package com.jml;

/**
 * @author:jml
 * @date: 2019/11/26 18:10 @description：
 */
public class OptionalTest {
	
	public static void main(String[] args) {
		Optional<String> optional = Optional.of("hello");
		if(optional.isPresent()){
			System.out.println(optional.get());
		}
		
		//容器不为空就执行里面的表达式，没有返回值， 因为Consumer接口就是接受参数不返回值
		optional.ifPresent(x-> System.out.println(x));
		
		Optional<String> optional1 = Optional.empty();
		//orElse方法，参数是泛型， 如果optional里面没有值就返回备用的值other
		String other = optional1.orElse("other");
		System.out.println(other);
		
		//orElseGet方法，可以对容器元素进行操作后再返回，参数是Supplier不接受参数返回值， 如果optional里面没有值就返回备用的值
		String s1 = optional1.orElseGet(() -> "nihao");
		
		boolean present = optional.filter(x -> x == "" ? true : false).isPresent();
		System.out.println(present);
	}
}
